//循环队列，约定最后一个位置不存值
#ifndef __QUEUE_H_
#define __QUEUE_H_
#include <stdio.h>
#include <stdlib.h>
#define ERROR_CHECK(ret, num, msg) \
    {                              \
        if (ret == num)            \
        {                          \
            perror(msg);           \
            exit(1);               \
        }                          \
    }
#define LEN 16
typedef char type;
typedef struct queue
{
    type data[LEN]; // 顺序表的空间
    int front;      // 队头
    int rear;       // 队尾元素下标+1
} QL;
/**
 * @brief Create a Queue List object
 *
 * @return QL*
 */
QL *createQueueList();
/**
 * @brief
 *
 * @param queue
 * @return int 1(空)
 */
int isEmpty(QL *queue);
/**
 * @brief
 *
 * @param queue
 * @return int 1(满)
 */
int isFull(QL *queue);
/**
 * @brief
 *
 * @param queue
 * @param val
 */
void enQueue(QL *queue, type val);
/**
 * @brief
 *
 * @param queue
 * @return type
 */
type deQueue(QL *queue);
/**
 * @brief 
 * 
 * @param queue 
 */
void showQueue(QL *queue);
/**
 * @brief 
 * 
 * @param queue 
 */
void clearQueue(QL *queue);
/**
 * @brief 
 * 
 * @param queue 
 */
void freeQueue(QL **queue);
#endif
